package day10.homework;
//模拟火车站售票窗口，要求：票池共100张票，3个售票窗口同时卖票
//售票过程需显示"窗口X卖出第Y张票",使用同步代码块保证票数正确
//当票卖完时所有线程终止
public class saleTickets implements Runnable{
    static int i = 1; // 使用静态变量确保多线程共享同一个计数器
    public void run() {
        String name = Thread.currentThread().getName();
        while (true) {
            synchronized (saleTickets.class) {
                // 检查是否还有票可卖
                if (i > 100) {
                    saleTickets.class.notifyAll(); // 唤醒所有等待线程
                    break; // 退出循环
                }

                System.out.println(name + "卖出第" + i + "张票");
                i++;

                try {
                    saleTickets.class.notifyAll(); // 唤醒其他等待的线程
                    saleTickets.class.wait(); // 当前线程等待
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        saleTickets s = new saleTickets(); // 创建一个Runnable实例

        // 将同一个Runnable实例传递给多个线程
        new Thread(s, "窗口1").start();
        new Thread(s, "窗口2").start();
        new Thread(s, "窗口3").start();
    }
}
